From: tsteven4 <13596209+tsteven4@users.noreply.github.com> Date: Wed, 23 Oct 2024 13:45:26 +0000 (-0600) Subject: Qtize garmin_tables (#1357) X-Git-Tag: archive/raspbian/1.10.0+ds-2+rpi1~1^2~12^2^2~33 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=49e26c140e855ffb636e47a0f827c3eb26cfd61b;p=gpsbabel.git Qtize garmin_tables (#1357) --- diff --git a/exif.cc b/exif.cc index e38714cff..4f6ec2c29 100644 --- a/exif.cc +++ b/exif.cc @@ -854,7 +854,7 @@ ExifFormat::exif_waypt_from_exif_app(ExifApp* app) const printf(MYNAME "-GPSLongitude = %12.7f\n", wpt->longitude); } if (!datum.isEmpty()) { - int idatum = gt_lookup_datum_index(datum.constData(), MYNAME); + int idatum = gt_lookup_datum_index(datum, MYNAME); if (idatum < 0) { fatal(MYNAME ": Unknown GPSMapDatum \"%s\"!\n", datum.constData()); } diff --git a/garmin_icon_tables.h b/garmin_icon_tables.h index a4e4fff62..3bc67a917 100644 --- a/garmin_icon_tables.h +++ b/garmin_icon_tables.h @@ -23,10 +23,19 @@ #ifndef GARMIN_ICON_TABLES_H #define GARMIN_ICON_TABLES_H +#include +#include + #include "garmin_tables.h" +struct icon_mapping_t { + int mpssymnum; + int pcxsymnum; + QString icon; +}; + /* MapSource 4.13 */ -const icon_mapping_t garmin_icon_table[] = { +static const QVector garmin_icon_table = { /* mps pcx desc */ { 107, 16384, "Airport" }, { 73, 8204, "Amusement Park" }, @@ -333,12 +342,9 @@ const icon_mapping_t garmin_icon_table[] = { { 246, -1, "Upland Game" }, { 247, -1, "Waterfowl" }, { 248, -1, "Water Source" }, - - - { -1, -1, nullptr }, }; -const icon_mapping_t garmin_smart_icon_table[] = { +static const QVector garmin_smart_icon_table = { /* Additional (optional, activated with -Si) icons */ { 92, 8227, "Micro-Cache" }, /* icon for "Toll Booth" */ { 48, 161, "Virtual cache" }, /* icon for "Scenic Area" */ @@ -348,6 +354,5 @@ const icon_mapping_t garmin_smart_icon_table[] = { { 83, 8214, "Post Office" }, /* Icon for "Post Office" */ { 47, 160, "Event Cache" }, /* Icon for "Event" */ { 90, 8221, "Webcam Cache" }, /* Icon for "Live Theatre" */ - { -1, -1, nullptr } }; #endif // GARMIN_ICON_TABLES_H diff --git a/garmin_tables.cc b/garmin_tables.cc index fb67d4b98..09bd94576 100644 --- a/garmin_tables.cc +++ b/garmin_tables.cc @@ -22,9 +22,12 @@ #include // for int32_t #include // for strncpy, strchr, strlen, strncmp + #include // for operator==, QChar #include // for QDebug +#include // for QVector #include // for CaseInsensitive + #include "defs.h" #include "garmin_tables.h" #include "jeeps/gpsmath.h" // for GPS_Lookup_Datum_Index, GPS_Math_Get_Datum_Name @@ -35,11 +38,20 @@ // these tables are in an include file so they can be shared with mkicondoc. #include "garmin_icon_tables.h" // for garmin_icon_table, garmin_smart_icon_table + +#define DEFAULT_ICON_DESCR "Waypoint" +#define DEFAULT_ICON_VALUE 18 + /* ICAO country code table */ /* source: https://en.wikipedia.org/wiki/ICAO_airport_code */ -const gt_country_code_t gt_country_codes[] = { +struct gt_country_code_t { + const char* cc; + const char* country; +}; + +static const gt_country_code_t gt_country_codes[] = { { "ZM,", "Mongolia" }, { "ZK,", "North Korea" }, { "Z*,", "China" }, @@ -267,7 +279,7 @@ const gt_country_code_t gt_country_codes[] = { }; /* gt_waypt_classes: gdb internal order */ -const char* const gt_waypt_class_names[] = { +const QStringList gt_waypt_class_names = { "User Waypoint", "Airport", "Intersection", @@ -281,43 +293,41 @@ const char* const gt_waypt_class_names[] = { "Map Intersection", "Map Address", "Map Line", - nullptr }; /* gt_display_mode_names: this order is used by most devices */ -const char* const gt_display_mode_names[] = { +const QStringList gt_display_mode_names = { "Symbol & Name", "Symbol", "Symbol & Description" }; struct grid_mapping_t { - const char* shortname; - const char* longname; + QString shortname; + QString longname; grid_type grid; }; /* gt_mps_grid_names: !!! degree sign substituted with '*' !!! */ -static const grid_mapping_t gt_mps_grid_names[] = { +static const QVector gt_mps_grid_names = { { "ddd", "Lat/Lon hddd.ddddd*", grid_lat_lon_ddd }, { "dmm", "Lat/Lon hddd*mm.mmm'", grid_lat_lon_dmm }, { "dms", "Lat/Lon hddd*mm'ss.s\"", grid_lat_lon_dms }, { "bng", "British National Grid", grid_bng }, { "utm", "UTM", grid_utm }, { "swiss", "Swiss grid", grid_swiss }, - { nullptr, nullptr, (grid_type) 0 } }; /* gt_mps_datum_names: */ struct datum_mapping_t { - const char* jeeps_name; - const char* mps_name; + QString jeeps_name; + QString mps_name; }; /* will be continued (when requested) */ -static const datum_mapping_t gt_mps_datum_names[] = { +static const QVector gt_mps_datum_names = { { "Alaska-NAD27", "NAD27 Alaska" }, { "Bahamas NAD27", "NAD27 Bahamas" }, { "Canada_Mean(NAD27)", "NAD27 Canada" }, @@ -330,15 +340,14 @@ static const datum_mapping_t gt_mps_datum_names[] = { { "Mexico NAD27", "NAD27 Mexico" }, { "North America 83", "NAD83" }, { "OSGB36", "Ord Srvy Grt Britn" }, - { nullptr, nullptr } }; struct garmin_color_t { - const char* name; + QString name; int32_t rgb; }; -static const garmin_color_t gt_colors[] = { +static const QVector gt_colors = { { "Unknown", unknown_color }, { "Black", 0x000000 }, { "DarkRed", 0x00008B }, @@ -357,11 +366,8 @@ static const garmin_color_t gt_colors[] = { { "Cyan", 0xFFFF00 }, { "White", 0xFFFFFF }, { "Transparent", unknown_color }, /* Currently not handled */ - { nullptr, 0 } }; -#define GT_COLORS_CT ((sizeof(gt_colors) / sizeof(gt_colors[0])) - 1) - unsigned char gt_switch_display_mode_value(const unsigned char display_mode, const int protoid, const char device) { @@ -431,18 +437,18 @@ gt_find_desc_from_icon_number(const int icon, garmin_formats_e garmin_format) return QStringLiteral("Custom %1").arg(icon - 7680); } - for (const icon_mapping_t* i = garmin_icon_table; i->icon; i++) { + for (const auto& icon_mapping : garmin_icon_table) { switch (garmin_format) { case MAPSOURCE: case GDB: - if (icon == i->mpssymnum) { - return i->icon; + if (icon == icon_mapping.mpssymnum) { + return icon_mapping.icon; } break; case PCX: case GARMIN_SERIAL: - if (icon == i->pcxsymnum) { - return i->icon; + if (icon == icon_mapping.pcxsymnum) { + return icon_mapping.icon; } break; default: @@ -455,7 +461,6 @@ gt_find_desc_from_icon_number(const int icon, garmin_formats_e garmin_format) int gt_find_icon_number_from_desc(const QString& desc, garmin_formats_e garmin_format) { static int find_flag = 0; - const icon_mapping_t* i; int def_icon = DEFAULT_ICON_VALUE; if (desc.isNull()) { @@ -485,29 +490,31 @@ int gt_find_icon_number_from_desc(const QString& desc, garmin_formats_e garmin_f } } - for (i = garmin_smart_icon_table; global_opts.smart_icons && i->icon; i++) { - if (desc.compare(i->icon, Qt::CaseInsensitive) == 0) { - switch (garmin_format) { - case MAPSOURCE: - case GDB: - return i->mpssymnum; - case PCX: - case GARMIN_SERIAL: - return i->pcxsymnum; - default: - fatal(MYNAME ": unknown garmin format.\n"); + if (global_opts.smart_icons) { + for (const auto& icon_mapping : garmin_smart_icon_table) { + if (desc.compare(icon_mapping.icon, Qt::CaseInsensitive) == 0) { + switch (garmin_format) { + case MAPSOURCE: + case GDB: + return icon_mapping.mpssymnum; + case PCX: + case GARMIN_SERIAL: + return icon_mapping.pcxsymnum; + default: + fatal(MYNAME ": unknown garmin format.\n"); + } } } } - for (i = garmin_icon_table; i->icon; i++) { - if (desc.compare(i->icon, Qt::CaseInsensitive) == 0) { + for (const auto& icon_mapping : garmin_icon_table) { + if (desc.compare(icon_mapping.icon, Qt::CaseInsensitive) == 0) { switch (garmin_format) { case MAPSOURCE: case GDB: - return i->mpssymnum; + return icon_mapping.mpssymnum; case PCX: case GARMIN_SERIAL: - return i->pcxsymnum; + return icon_mapping.pcxsymnum; default: fatal(MYNAME ": unknown garmin format.\n"); } @@ -520,16 +527,16 @@ int gt_find_icon_number_from_desc(const QString& desc, garmin_formats_e garmin_f */ if (find_flag == 0) { - const char* prefixes[] = { - "White ", "Red ", "Green ", "Blue ", "Black ", nullptr + static const QStringList prefixes = { + "White ", "Red ", "Green ", "Blue ", "Black ", }; // Rewrite "Green Square" to "Square, Green". - for (const char** prefix = prefixes; *prefix != nullptr; prefix++) { - if (desc.startsWith(*prefix, Qt::CaseInsensitive)) { + for (const auto& prefix : prefixes) { + if (desc.startsWith(prefix, Qt::CaseInsensitive)) { QString buff = desc; - buff.replace(*prefix, ""); + buff.replace(prefix, ""); buff.append(", "); - buff.append(*prefix); + buff.append(prefix); buff = buff.trimmed(); find_flag = 1; @@ -641,52 +648,55 @@ gt_get_icao_cc(const QString& country, const QString& shortname) } grid_type -gt_lookup_grid_type(const char* grid_name, const QString& module) +gt_lookup_grid_type(const QString& grid_name, const QString& module) { - for (const grid_mapping_t* g = gt_mps_grid_names; (g->shortname); g++) { - if (QString::compare(grid_name, g->shortname, Qt::CaseInsensitive) == 0 || - QString::compare(grid_name, g->longname,Qt::CaseInsensitive) == 0) { - return g->grid; + for (const auto& grid_mapping : gt_mps_grid_names) { + if (QString::compare(grid_name, grid_mapping.shortname, Qt::CaseInsensitive) == 0 || + QString::compare(grid_name, grid_mapping.longname,Qt::CaseInsensitive) == 0) { + return grid_mapping.grid; } } - fatal(FatalMsg() << module << ": Unsupported grid (" << grid_name << - ". See GPSBabel help for supported grids.\n"); + fatal(FatalMsg().nospace().noquote() << module << + ": Unsupported grid (" << grid_name << + "). See GPSBabel help for supported grids."); return grid_unknown; /* (warnings) */ } -const char* -gt_get_mps_grid_longname(const grid_type grid, const char* module) +QString +gt_get_mps_grid_longname(const grid_type grid, const QString& module) { - if ((grid < GRID_INDEX_MIN) || (grid > GRID_INDEX_MAX)) - fatal("%s: Grid index out of range %d (%d..%d)!", - module, (int) grid, - (int)GRID_INDEX_MIN, (int)GRID_INDEX_MAX); + if ((grid < GRID_INDEX_MIN) || (grid > GRID_INDEX_MAX)) { + fatal(FatalMsg().nospace().noquote() << module << + ": Grid index out of range " << grid << + " (" << GRID_INDEX_MIN << ".." << GRID_INDEX_MAX << ")!"); + } return gt_mps_grid_names[grid].longname; } -const char* +QString gt_get_mps_datum_name(const int datum_index) { - const char* result = GPS_Math_Get_Datum_Name(datum_index); + QString result = GPS_Math_Get_Datum_Name(datum_index); - for (const datum_mapping_t* d = gt_mps_datum_names; (d->jeeps_name); d++) - if (QString::compare(result, d->jeeps_name, Qt::CaseInsensitive) == 0) { - return d->mps_name; + for (const auto& datum_mapping : gt_mps_datum_names) { + if (QString::compare(result, datum_mapping.jeeps_name, Qt::CaseInsensitive) == 0) { + return datum_mapping.mps_name; } + } return result; } int -gt_lookup_datum_index(const char* datum_str, const QString& module) +gt_lookup_datum_index(const QString& datum_str, const QString& module) { - const char* name = datum_str; + QString name = datum_str; - for (const datum_mapping_t* d = gt_mps_datum_names; (d->jeeps_name); d++) { - if (QString::compare(name, d->mps_name, Qt::CaseInsensitive) == 0) { - name = d->jeeps_name; + for (const auto& datum_mapping : gt_mps_datum_names) { + if (QString::compare(name, datum_mapping.mps_name, Qt::CaseInsensitive) == 0) { + name = datum_mapping.jeeps_name; break; } } @@ -695,13 +705,14 @@ gt_lookup_datum_index(const char* datum_str, const QString& module) // Didn't get a hit? Try again after modifying the lookup. if (result < 0) { - QString tmp = QString(datum_str) + " mean"; + QString tmp = datum_str + " mean"; result = GPS_Lookup_Datum_Index(tmp); } if (result < 0) { - fatal(FatalMsg() << module << ": Unsupported datum (" << datum_str << - "). See GPSBabel help for supported datums."); + fatal(FatalMsg().nospace().noquote() << module << + ": Unsupported datum (" << datum_str << + "). See GPSBabel help for supported datums."); } return result; } @@ -709,7 +720,7 @@ gt_lookup_datum_index(const char* datum_str, const QString& module) uint32_t gt_color_value(const unsigned int garmin_index) { - if ((garmin_index < GT_COLORS_CT)) { + if ((garmin_index < gt_colors.size())) { return gt_colors[garmin_index].rgb; } else { return unknown_color; /* -1 */ @@ -719,10 +730,11 @@ gt_color_value(const unsigned int garmin_index) uint32_t gt_color_value_by_name(const QString& name) { - for (unsigned int i = 0; i < GT_COLORS_CT; i++) + for (int i = 0; i < gt_colors.size(); ++i) { if (QString::compare(gt_colors[i].name, name, Qt::CaseInsensitive) == 0) { return gt_colors[i].rgb; } + } return gt_colors[0].rgb; } @@ -730,10 +742,11 @@ gt_color_value_by_name(const QString& name) int gt_color_index_by_name(const QString& name) { - for (unsigned int i = 0; i < GT_COLORS_CT; i++) + for (int i = 0; i < gt_colors.size(); ++i) { if (QString::compare(gt_colors[i].name, name, Qt::CaseInsensitive) == 0) { return i; } + } return 0; /* unknown */ } @@ -741,18 +754,19 @@ gt_color_index_by_name(const QString& name) int gt_color_index_by_rgb(const int rgb) { - for (unsigned int i = 0; i < GT_COLORS_CT; i++) + for (int i = 0; i < gt_colors.size(); ++i) { if (rgb == gt_colors[i].rgb) { return i; } + } return 0; /* unknown */ } -const char* +QString gt_color_name(const unsigned int garmin_index) { - if ((garmin_index < GT_COLORS_CT)) { + if ((garmin_index < gt_colors.size())) { return gt_colors[garmin_index].name; } else { return gt_colors[0].name; diff --git a/garmin_tables.h b/garmin_tables.h index 47dc7b2e0..303fa1287 100644 --- a/garmin_tables.h +++ b/garmin_tables.h @@ -27,22 +27,12 @@ #include // for QString #include "defs.h" // for grid_type -#define DEFAULT_ICON_DESCR "Waypoint" -#define DEFAULT_ICON_VALUE 18 - -struct icon_mapping_t { - int mpssymnum; - int pcxsymnum; - const char* icon; -}; enum garmin_formats_e {MAPSOURCE, PCX, GARMIN_SERIAL, GDB}; QString gt_find_desc_from_icon_number(int icon, garmin_formats_e garmin_format); int gt_find_icon_number_from_desc(const QString& desc, garmin_formats_e garmin_format); -extern const icon_mapping_t garmin_icon_table[]; - enum gt_waypt_classes_e { gt_waypt_class_user_waypoint = 0, gt_waypt_class_airport, @@ -59,14 +49,7 @@ enum gt_waypt_classes_e { gt_waypt_class_map_line }; -extern const char* const gt_waypt_class_names[]; - -struct gt_country_code_t { - const char* cc; - const char* country; -}; - -extern const gt_country_code_t gt_country_codes[]; +extern const QStringList gt_waypt_class_names; const char* gt_get_icao_country(const QString& cc); const char* gt_get_icao_cc(const QString& country, const QString& shortname); @@ -78,10 +61,7 @@ enum gt_display_modes_e { gt_display_mode_symbol_and_comment }; -extern const char* const gt_display_mode_names[]; - -#define GT_DISPLAY_MODE_MIN gt_display_mode_symbol_and_name -#define GT_DISPLAY_MODE_MAX gt_display_mode_symbol_and_comment +extern const QStringList gt_display_mode_names; enum gt_gdb_display_modes_e { gt_gdb_display_mode_symbol = 0, @@ -89,18 +69,16 @@ enum gt_gdb_display_modes_e { gt_gdb_display_mode_symbol_and_comment }; -unsigned char gt_convert_category(const char* name, int* category); - unsigned char gt_switch_display_mode_value(unsigned char display_mode, int protoid, char device); -grid_type gt_lookup_grid_type(const char* grid_name, const QString& module); -const char* gt_get_mps_grid_longname(grid_type grid, const char* module); -int gt_lookup_datum_index(const char* datum_str, const QString& module); -const char* gt_get_mps_datum_name(int datum_index); +grid_type gt_lookup_grid_type(const QString& grid_name, const QString& module); +QString gt_get_mps_grid_longname(grid_type grid, const QString& module); +int gt_lookup_datum_index(const QString& datum_str, const QString& module); +QString gt_get_mps_datum_name(int datum_index); uint32_t gt_color_value(unsigned int garmin_index); uint32_t gt_color_value_by_name(const QString& name); int gt_color_index_by_name(const QString& name); int gt_color_index_by_rgb(int rgb); -const char* gt_color_name(unsigned int garmin_index); +QString gt_color_name(unsigned int garmin_index); #endif diff --git a/garmin_txt.cc b/garmin_txt.cc index 455fced79..e52a68198 100644 --- a/garmin_txt.cc +++ b/garmin_txt.cc @@ -33,7 +33,6 @@ #include // for gmtime, time_t, localtime, strftime, tm #include // for optional -#include // for add_const_t #include // for pair, as_const, make_pair #include // for QByteArray #include // for QChar, QChar::Other_Control @@ -72,16 +71,6 @@ const QVector GarminTxtFormat::headers = { "Name\tStart Time\tElapsed Time\tLength\tAverage Speed\tLink" }; -inline gt_display_modes_e& operator++(gt_display_modes_e& s) // prefix -{ - return s = static_cast(s + 1); -} -inline gt_display_modes_e operator++(gt_display_modes_e& s, int) // postfix -{ - gt_display_modes_e ret(s); - ++s; - return ret; -} bool GarminTxtFormat::is_valid_alt(double alt) { @@ -273,7 +262,7 @@ GarminTxtFormat::print_position(const Waypoint* wpt) fatal(MYNAME ": %s (%s) is outside of convertible area \"%s\"!\n", wpt->shortname.isEmpty() ? "Waypoint" : qPrintable(wpt->shortname), qPrintable(pretty_deg_format(wpt->latitude, wpt->longitude, 'd', nullptr, false)), - gt_get_mps_grid_longname(grid_index, MYNAME)); + qPrintable(gt_get_mps_grid_longname(grid_index, MYNAME))); } } @@ -419,18 +408,18 @@ GarminTxtFormat::print_string(const char* fmt, const QString& string) void GarminTxtFormat::write_waypt(const Waypoint* wpt) { - const char* wpt_type; + QString wpt_type; const garmin_fs_t* gmsd = garmin_fs_t::find(wpt); int i = garmin_fs_t::get_display(gmsd, 0); - if (i > GT_DISPLAY_MODE_MAX) { + if (!((i >= 0) && (i < gt_display_mode_names.size()))) { i = 0; } - const char* dspl_mode = gt_display_mode_names[i]; + QString dspl_mode = gt_display_mode_names[i]; int wpt_class = garmin_fs_t::get_wpt_class(gmsd, 0); - if (wpt_class <= gt_waypt_class_map_line) { + if ((wpt_class >= 0) && (wpt_class < gt_waypt_class_names.size())) { wpt_type = gt_waypt_class_names[wpt_class]; } else { wpt_type = gt_waypt_class_names[0]; @@ -450,7 +439,7 @@ GarminTxtFormat::write_waypt(const Waypoint* wpt) } else { *fout << "\t"; } - *fout << QString::asprintf("%s\t", wpt_type); + *fout << wpt_type << "\t"; print_position(wpt); @@ -475,7 +464,7 @@ GarminTxtFormat::write_waypt(const Waypoint* wpt) if (x != -999) { print_temperature(x); } - *fout << QString::asprintf("\t%s\t", dspl_mode); + *fout << "\t" << dspl_mode << "\t"; *fout << "Unknown\t"; /* Color is fixed: Unknown */ @@ -673,14 +662,14 @@ GarminTxtFormat::wr_init(const QString& fname) } } - datum_str = get_option_val(opt_datum, nullptr); - const char* grid_str = get_option_val(opt_grid, nullptr); + QString datum_str = get_option_val(opt_datum, nullptr); + QString grid_str = get_option_val(opt_grid, nullptr); grid_index = grid_lat_lon_dmm; - if (grid_str != nullptr) { - int i; + if (!grid_str.isEmpty()) { + bool ok; - if (sscanf(grid_str, "%d", &i)) { + if (int i = grid_str.toInt(&ok); ok) { grid_index = (grid_type) i; if ((grid_index < GRID_INDEX_MIN) || (grid_index > GRID_INDEX_MAX)) fatal(MYNAME ": Grid index out of range (%d..%d)!", @@ -752,8 +741,8 @@ GarminTxtFormat::write() grid_str = grid_str.replace('*', u'°'); *fout << "Grid\t" << grid_str << "\r\n"; - datum_str = gt_get_mps_datum_name(datum_index); - *fout << QString::asprintf("Datum\t%s\r\n\r\n", datum_str); + QString datum_str = gt_get_mps_datum_name(datum_index); + *fout << "Datum\t" << datum_str << "\r\n\r\n"; waypoints = 0; gtxt_flags.enum_waypoints = 1; /* enum all waypoints */ @@ -961,7 +950,7 @@ GarminTxtFormat::parse_display(const QString& str, int* val) const return false; } - for (gt_display_modes_e i = GT_DISPLAY_MODE_MIN; i <= GT_DISPLAY_MODE_MAX; ++i) { + for (int i = 0; i < gt_display_mode_names.size(); ++i) { if (case_ignore_strcmp(str, gt_display_mode_names[i]) == 0) { *val = i; return true; @@ -1011,13 +1000,12 @@ GarminTxtFormat::parse_grid(const QStringList& lineparts) fatal(MYNAME ": Missing grid headline!\n"); } - const QByteArray ba = lineparts.at(0).toUtf8(); - const char* str = ba.constData(); - if (strstr(str, "dd.ddddd") != nullptr) { + const QString str = lineparts.at(0); + if (str.contains("dd.ddddd")) { grid_index = grid_lat_lon_ddd; - } else if (strstr(str, "mm.mmm") != nullptr) { + } else if (str.contains("mm.mmm")) { grid_index = grid_lat_lon_dmm; - } else if (strstr(str, "mm'ss.s") != nullptr) { + } else if (str.contains("mm'ss.s")) { grid_index = grid_lat_lon_dms; } else { grid_index = gt_lookup_grid_type(str, MYNAME); @@ -1032,7 +1020,7 @@ GarminTxtFormat::parse_datum(const QStringList& lineparts) } const auto& str = lineparts.at(0); - datum_index = gt_lookup_datum_index(CSTR(str), MYNAME); + datum_index = gt_lookup_datum_index(str, MYNAME); } void @@ -1067,7 +1055,7 @@ GarminTxtFormat::parse_waypoint(const QStringList& lineparts) } break; case 3: - for (i = 0; i <= gt_waypt_class_map_line; i++) { + for (i = 0; i < gt_waypt_class_names.size(); i++) { if (case_ignore_strcmp(str, gt_waypt_class_names[i]) == 0) { garmin_fs_t::set_wpt_class(gmsd, i); break; diff --git a/garmin_txt.h b/garmin_txt.h index 8c29c2924..9af5aa442 100644 --- a/garmin_txt.h +++ b/garmin_txt.h @@ -163,7 +163,6 @@ private: int wpt_a_ct{}; grid_type grid_index{}; int datum_index{}; - const char* datum_str{}; int current_line{}; QString date_time_format; int precision = 3; diff --git a/gpx.cc b/gpx.cc index 44d8f802b..5bc029e49 100644 --- a/gpx.cc +++ b/gpx.cc @@ -1532,8 +1532,7 @@ GpxFormat::gpx_track_hdr(const route_head* rte) if (ci > 0) { writer->writeStartElement(QStringLiteral("extensions")); writer->writeStartElement(QStringLiteral("gpxx:TrackExtension")); - writer->writeTextElement(QStringLiteral("gpxx:DisplayColor"), QStringLiteral("%1") - .arg(gt_color_name(ci))); + writer->writeTextElement(QStringLiteral("gpxx:DisplayColor"), gt_color_name(ci)); writer->writeEndElement(); // Close gpxx:TrackExtension tag writer->writeEndElement(); // Close extensions tag } @@ -1622,8 +1621,7 @@ GpxFormat::gpx_route_hdr(const route_head* rte) const writer->writeStartElement(QStringLiteral("gpxx:RouteExtension")); // FIXME: the value to use for IsAutoNamed is questionable. writer->writeTextElement(QStringLiteral("gpxx:IsAutoNamed"), rte->rte_name.isEmpty()? QStringLiteral("true") : QStringLiteral("false")); // Required element - writer->writeTextElement(QStringLiteral("gpxx:DisplayColor"), QStringLiteral("%1") - .arg(gt_color_name(ci))); + writer->writeTextElement(QStringLiteral("gpxx:DisplayColor"), gt_color_name(ci)); writer->writeEndElement(); // Close gpxx:RouteExtension tag writer->writeEndElement(); // Close extensions tag } diff --git a/mkicondoc.cc b/mkicondoc.cc index 94a7a21bc..d442a6c39 100644 --- a/mkicondoc.cc +++ b/mkicondoc.cc @@ -3,31 +3,26 @@ #include // for sort #include // for printf -#include // for strcmp +#include // for QString, operator< #include // for QVector<>::iterator, QVector -#include "garmin_icon_tables.h" // for garmin_icon_table, garmin_smart_icon_table -#include "garmin_tables.h" // for icon_mapping_t +#include "garmin_icon_tables.h" // for icon_mapping_t, garmin_icon_table, garmin_smart_icon_table int main() { QVector table; - for (const icon_mapping_t* entry = garmin_icon_table; entry->icon; entry++) { - table.append(*entry); - } - for (const icon_mapping_t* entry = garmin_smart_icon_table; entry->icon; entry++) { - table.append(*entry); - } + table.append(garmin_icon_table); + table.append(garmin_smart_icon_table); auto sort_lambda = [](const icon_mapping_t& a, const icon_mapping_t& b)->bool { - return strcmp(a.icon, b.icon) < 0; + return a.icon < b.icon; }; std::sort(table.begin(), table.end(), sort_lambda); for (const auto& entry : table) { - printf(" %s\n",entry.icon); + printf(" %s\n", qPrintable(entry.icon)); } return 0; diff --git a/unicsv.cc b/unicsv.cc index 7686d9268..2b0a247dd 100644 --- a/unicsv.cc +++ b/unicsv.cc @@ -465,7 +465,7 @@ UnicsvFormat::rd_init(const QString& fname) unicsv_detect = (!(global_opts.masked_objective & (WPTDATAMASK | TRKDATAMASK | RTEDATAMASK | POSNDATAMASK))); unicsv_track = unicsv_route = nullptr; - unicsv_datum_idx = gt_lookup_datum_index(opt_datum, MYNAME); + unicsv_datum_idx = gt_lookup_datum_index(opt_datum.get(), MYNAME); fin = new gpsbabel::TextStream; fin->open(fname, QIODevice::ReadOnly, MYNAME, opt_codec); @@ -1091,7 +1091,7 @@ UnicsvFormat::read() fatal(MYNAME ": %s (%s) is outside of convertible area of grid \"%s\"!\n", wpt->shortname.isEmpty() ? "Waypoint" : qPrintable(wpt->shortname), qPrintable(pretty_deg_format(wpt->latitude, wpt->longitude, 'd', nullptr, false)), - gt_get_mps_grid_longname(unicsv_grid_idx, MYNAME)); + qPrintable(gt_get_mps_grid_longname(unicsv_grid_idx, MYNAME))); } void @@ -1697,7 +1697,7 @@ UnicsvFormat::wr_init(const QString& fname) fatal(MYNAME ": Grid index out of range (%d..%d)!\n", (int)GRID_INDEX_MIN, (int)GRID_INDEX_MAX); } else { - unicsv_grid_idx = gt_lookup_grid_type(opt_grid, MYNAME); + unicsv_grid_idx = gt_lookup_grid_type(opt_grid.get(), MYNAME); } } @@ -1711,7 +1711,7 @@ UnicsvFormat::wr_init(const QString& fname) { unicsv_datum_idx = kDatumWGS84; /* internal, becomes CH1903 */ } else { - unicsv_datum_idx = gt_lookup_datum_index(opt_datum, MYNAME); + unicsv_datum_idx = gt_lookup_datum_index(opt_datum.get(), MYNAME); } llprec = xstrtoi(opt_prec, nullptr, 10);